﻿namespace Seagull.Foundation;

/// <summary>
/// 通过中介管道发布通知或事件，由多个处理程序处理。
/// </summary>
public interface IEventBus
{
    /// <summary>
    /// 向多个处理程序异步发送通知。
    /// </summary>
    /// <typeparam name="TData">事件的类型</typeparam>
    /// <param name="eventData">事件的数据</param>
    /// <returns></returns>
    Task<IEventBusResponse> Publish<TData>(TData eventData) where TData : IEvent, new();
}